home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / jpi / maped.bas < prev    next >
BASIC Source File  |  1997-12-24  |  11KB  |  347 lines

  1. Attribute VB_Name = "MapEdit"
  2. Global TerrMoveMethod As Integer
  3. Global CurrTerrain As Integer
  4. Global Const shadowline = 1.5
  5. Global Const DivVal1 = 2
  6. Global Const BlockSize = 20
  7. Global Const HalfBlockSize = (BlockSize / 4) * 3
  8. Global DropItem As Boolean
  9.  
  10. Global MaxX As Integer
  11. Global MaxY As Integer
  12. Type GrndBlcks
  13.   TerrainType As Integer
  14.   Z(4) As Integer
  15. End Type
  16. Global GroundBlocks(100, 100) As GrndBlcks
  17. Global ViewX As Single
  18. Global ViewY As Single
  19. Global Const ViewWidth = 20
  20. Global Const ViewHeight = 20
  21. Global Const HalfViewWidth = ViewWidth / 2
  22. Global Const TERR_GRASS = 0
  23. Global Const TERR_WATER = 1
  24. Global Const TERR_GOLD = 2
  25. Global Const TERR_COASTLINE = 3
  26. Global Const TERRAINTYPE_ROCKS = 4
  27. Public Function GetPropertyValue(TextString) As String
  28. GetPropertyValue = Right$(TextString, Len(TextString) - InStr(1, TextString, " "))
  29. End Function
  30. Public Function GetPropertyName(TextString) As String
  31. If InStr(1, TextString, " ") = 0 Then
  32.   GetPropertyName = TextString
  33. Else
  34.   GetPropertyName = Left$(TextString, InStr(1, TextString, " ") - 1)
  35. End If
  36. End Function
  37. Sub GenItem(ItemName, X, Y)
  38. CX = Int((X / BlockSize) + ViewX)
  39. Cy = Int((Y / HalfBlockSize) + ViewY)
  40. Form1.Picture1.Circle (((CX - ViewX) * BlockSize) + (BlockSize / 2), ((Cy - ViewY) * HalfBlockSize) + (HalfBlockSize / 2)), 7, RGB(255, 255, 0)
  41. Form1.Picture1.CurrentX = ((CX - ViewX) * BlockSize) + (BlockSize / 2)
  42. Form1.Picture1.CurrentY = ((Cy - ViewY) * HalfBlockSize) + (HalfBlockSize / 2)
  43. Form1.Picture1.ForeColor = RGB(255, 0, 0)
  44. Form1.Picture1.Print ItemName
  45. End Sub
  46. Sub LoadMap(EpisodeNumber, LevelNumber)
  47. Open "E" & EpisodeNumber & "L" & LevelNumber & ".Ter" For Input As #1
  48.  
  49.         Line Input #1, a$ 'Map width
  50.         Form1.Text1.Text = Val(GetPropertyValue(a$))
  51.         
  52.         Line Input #1, a$ 'Map height
  53.         Form1.Text2.Text = Val(GetPropertyValue(a$))
  54. MaxX = Val(Form1.Text1.Text)
  55. Form1.HScroll1.Max = (MaxX - ViewWidth) * 4
  56. MaxY = Val(Form1.Text2.Text)
  57. Form1.VScroll1.Max = (MaxY - ViewHeight) * 4
  58.         
  59.         For X = 1 To MaxX
  60.           For Y = 1 To MaxY
  61.             Line Input #1, a$
  62.             GroundBlocks(X, Y).TerrainType = Val(GetPropertyValue(a$))
  63.             Line Input #1, a$
  64.             GroundBlocks(X, Y).Z(1) = Val(GetPropertyValue(a$))
  65.             Line Input #1, a$
  66.             GroundBlocks(X, Y).Z(2) = Val(GetPropertyValue(a$))
  67.             Line Input #1, a$
  68.             GroundBlocks(X, Y).Z(3) = Val(GetPropertyValue(a$))
  69.             Line Input #1, a$
  70.             GroundBlocks(X, Y).Z(4) = Val(GetPropertyValue(a$))
  71.           Next Y
  72.         Next X
  73.  
  74. Close #1
  75. End Sub
  76.  
  77. Sub SaveMap(EpisodeNumber, LevelNumber)
  78. Open "E" & EpisodeNumber & "L" & LevelNumber & ".Ter" For Output As #1
  79.   Print #1, MaxX
  80.   Print #1, MaxY
  81.         For X = 1 To MaxX
  82.           For Y = 1 To MaxY
  83.             Print #1, GroundBlocks(X, Y).TerrainType
  84.             
  85.             For i = 1 To 4
  86.               Print #1, GroundBlocks(X, Y).Z(i)
  87.             Next i
  88.           Next Y
  89.         Next X
  90.  
  91. Close #1
  92. End Sub
  93. Sub RenderView()
  94. 'Form1.Picture1.Cls
  95.     OffsetX = (ViewX * BlockSize)
  96.     offsetY = (ViewY * HalfBlockSize) - 1
  97.  
  98. For currX = Int(ViewX) To Int(ViewX) + ViewWidth
  99.   For currY = Int(ViewY) To Int(ViewY) + ViewHeight
  100.     Select Case GroundBlocks(currX, currY).TerrainType
  101.     Case TERR_GRASS
  102.       rc = 1
  103.       gc = 255
  104.       bc = 1
  105.     Case TERR_WATER
  106.       rc = 1
  107.       gc = 100
  108.       bc = 255
  109.     Case TERR_GOLD
  110.       rc = 200
  111.       gc = 200
  112.       bc = 1
  113.     Case TERR_COASTLINE
  114.       rc = 1
  115.       gc = 200
  116.       bc = 200
  117.     
  118.     End Select
  119.     
  120.     Form1.Picture1.Line ((currX * BlockSize) - OffsetX, (currY * HalfBlockSize) - offsetY)-(((currX + 1) * BlockSize) - OffsetX, ((currY + 1) * HalfBlockSize) - offsetY), RGB(rc / 3, gc / 3, bc / 3), BF
  121.   Next currY
  122. Next currX
  123. OffZ = 5
  124. FromX = Int(ViewX)
  125. FromY = Int(ViewY)
  126. ToX = Int(ViewX) + ViewWidth
  127. ToY = Int(ViewY) + ViewHeight
  128. For X = FromX To ToX 'ViewX To ViewX + ViewWidth
  129.   For Y = FromY To ToY 'ViewY To ViewY + ViewHeight
  130.     Select Case GroundBlocks(X, Y).TerrainType
  131.     Case TERR_GRASS
  132.       rc = 1
  133.       gc = 255
  134.       bc = 1
  135.     Case TERR_WATER
  136.       rc = 1
  137.       gc = 100
  138.       bc = 255
  139.     Case TERR_GOLD
  140.       rc = 200
  141.       gc = 200
  142.       bc = 1
  143.     Case TERR_COASTLINE
  144.       rc = 1
  145.       gc = 200
  146.       bc = 200
  147.  
  148.     End Select
  149.     OffX = ViewX * BlockSize
  150.     OffY = ViewY * HalfBlockSize
  151.     Ind = 1
  152.     DisplaceX = ((X - ViewX) - (HalfViewWidth)) * ((GroundBlocks(X, Y).Z(1) + OffZ) / 4)
  153.     DisplaceX2 = (((X + 1) - ViewX) - (HalfViewWidth)) * ((GroundBlocks(X + 1, Y).Z(1) + OffZ) / 4)
  154.     Form1.Picture1.Line (((X * BlockSize) + DisplaceX) - OffX, ((Y * HalfBlockSize) - (GroundBlocks(X, Y).Z(1) * 2)) - OffY)-((X * BlockSize) - OffsetX, (Y * HalfBlockSize) - offsetY), RGB(rc / shadowline, gc / shadowline, bc / shadowline)
  155.     
  156.     Form1.Picture1.Line (((X * BlockSize) + DisplaceX) - OffX, ((Y * HalfBlockSize) - (GroundBlocks(X, Y).Z(1) * 2)) - OffY)-((((X + 1) * BlockSize) + DisplaceX2) - OffX, ((Y * HalfBlockSize) - (GroundBlocks(X, Y).Z(2) * 2)) - OffY), RGB(rc, gc, bc)
  157.     
  158.     
  159.     Ind = 2
  160.     DisplaceX = ((X - ViewX) - (HalfViewWidth)) * ((GroundBlocks(X, Y).Z(1) + OffZ) / 4)
  161.     DisplaceX2 = ((X - ViewX) - (HalfViewWidth)) * ((GroundBlocks(X, Y + 1).Z(1) + OffZ) / 4)
  162.     
  163.     Form1.Picture1.Line (((X * BlockSize) + DisplaceX) - OffX, ((Y * HalfBlockSize) - (GroundBlocks(X, Y).Z(1) * 2)) - OffY)-(((X * BlockSize) + DisplaceX2) - OffX, (((Y + 1) * HalfBlockSize) - (GroundBlocks(X, Y).Z(4) * 2)) - OffY), RGB(rc, gc, bc)
  164.     
  165.     
  166.     
  167.   Next Y
  168. Next X
  169. End Sub
  170. Sub DrawSquare(X1, Y1)
  171. X = X1
  172. Y = Y1
  173. OAmnt = 3
  174. OAmnt2 = 4
  175. OffsetX = (ViewX * BlockSize)
  176. offsetY = (ViewY * HalfBlockSize) - 1
  177. If X < 1 + OAmnt Then X = OAmnt + 1
  178. If Y < 1 + OAmnt Then Y = OAmnt + 1
  179. For currX = X - OAmnt To X + OAmnt
  180.   For currY = Y - OAmnt To Y + OAmnt
  181.     Select Case GroundBlocks(currX, currY).TerrainType
  182.     Case TERR_GRASS
  183.       rc = 1
  184.       gc = 255
  185.       bc = 1
  186.     Case TERR_WATER
  187.       rc = 1
  188.       gc = 100
  189.       bc = 255
  190.     Case TERR_GOLD
  191.       rc = 200
  192.       gc = 200
  193.       bc = 1
  194.     Case TERR_COASTLINE
  195.       rc = 1
  196.       gc = 200
  197.       bc = 200
  198.     
  199.     End Select
  200.     
  201.     Form1.Picture1.Line ((currX * BlockSize) - OffsetX, (currY * HalfBlockSize) - offsetY)-(((currX + 1) * BlockSize) - OffsetX, ((currY + 1) * HalfBlockSize) - offsetY), RGB(rc / 3, gc / 3, bc / 3), BF
  202.   Next currY
  203. Next currX
  204. OffZ = 5
  205. FromX = X - OAmnt2
  206. FromY = Y - OAmnt2
  207. If FromY < 1 Then FromY = 1
  208. If FromX < 1 Then FromX = 1
  209. ToX = X + OAmnt2
  210. ToY = Y + OAmnt2
  211. For X = FromX To ToX 'ViewX To ViewX + ViewWidth
  212.   For Y = FromY To ToY 'ViewY To ViewY + ViewHeight
  213.     Select Case GroundBlocks(X, Y).TerrainType
  214.     Case TERR_GRASS
  215.       rc = 1
  216.       gc = 255
  217.       bc = 1
  218.     Case TERR_WATER
  219.       rc = 1
  220.       gc = 100
  221.       bc = 255
  222.     Case TERR_GOLD
  223.       rc = 200
  224.       gc = 200
  225.       bc = 1
  226.     Case TERR_COASTLINE
  227.       rc = 1
  228.       gc = 200
  229.       bc = 200
  230.     
  231.     End Select
  232.     OffX = ViewX * BlockSize
  233.     OffY = ViewY * HalfBlockSize
  234.     Ind = 1
  235.     DisplaceX = ((X - ViewX) - (HalfViewWidth)) * ((GroundBlocks(X, Y).Z(1) + OffZ) / 4)
  236.     DisplaceX2 = (((X + 1) - ViewX) - (HalfViewWidth)) * ((GroundBlocks(X + 1, Y).Z(1) + OffZ) / 4)
  237.     Form1.Picture1.Line (((X * BlockSize) + DisplaceX) - OffX, ((Y * HalfBlockSize) - (GroundBlocks(X, Y).Z(1) * 2)) - OffY)-((X * BlockSize) - OffsetX, (Y * HalfBlockSize) - offsetY), RGB(rc / shadowline, gc / shadowline, bc / shadowline)
  238.     
  239.     Form1.Picture1.Line (((X * BlockSize) + DisplaceX) - OffX, ((Y * HalfBlockSize) - (GroundBlocks(X, Y).Z(1) * 2)) - OffY)-((((X + 1) * BlockSize) + DisplaceX2) - OffX, ((Y * HalfBlockSize) - (GroundBlocks(X, Y).Z(2) * 2)) - OffY), RGB(rc, gc, bc)
  240.     
  241.     
  242.     Ind = 2
  243.     DisplaceX = ((X - ViewX) - (HalfViewWidth)) * ((GroundBlocks(X, Y).Z(1) + OffZ) / 4)
  244.     DisplaceX2 = ((X - ViewX) - (HalfViewWidth)) * ((GroundBlocks(X, Y + 1).Z(1) + OffZ) / 4)
  245.     
  246.     Form1.Picture1.Line (((X * BlockSize)